﻿package vue;

import java.awt.event.InputEvent;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.KeyStroke;

import configuration.Constante;

public class MenuControle {
	
    private JMenuBar barreMenus;
    private JMenu fichierJMenu, stageJMenu, eleveJMenu, noteJMenu, affectJMenu, gradeJMenu, helpJMenu;
    // Fichier
    private JMenuItem quitter ;
    // Stage
    private JMenuItem ajoutStage, suppStage, affStage, modStage ;
    // Eleve
    private JMenuItem ajoutEleve, modifierEleve, affStageEleve, supprimerEleve;
    // Note
    private JMenuItem ajoutNote, modifierNote, affClassNote, supprimerNote, afficherNote;
    // Affectation
    private JMenuItem ajoutAffect, modifierAffect, affAffect, supprimerAffect;
    // Grade
    private JMenuItem  affGrade;
    // Help
    private JMenuItem aPropos ;
    
    private static JFrame f= new JFrame();
   
    public MenuControle() {
        f.setTitle(Constante.NOM_APPLI);
        f.setSize(500, 600);
        
        // Permet de lancer l'appli au milieu de l'ecran.
        f.setLocationRelativeTo(null);

        /**
         * création de la barre des menus
         */
        barreMenus = new JMenuBar();
        f.setJMenuBar(barreMenus);
        
        /**
         * Ajout menu Fichier
         */
        fichierJMenu = new JMenu("Fichier");
        fichierJMenu.setMnemonic('F');
        barreMenus.add(fichierJMenu);
        quitter = new JMenuItem("Quitter");
        quitter.setAccelerator(KeyStroke.getKeyStroke('W', InputEvent.CTRL_DOWN_MASK));
        quitter.setName(Constante.MENU_FICHIER_QUITTER);
        quitter.addActionListener(new GestionNavigation());
        fichierJMenu.add(quitter);
        
        /**
         * //creation du menu Stage
         */
        stageJMenu = new JMenu("Stage");
        stageJMenu.setMnemonic('S');
        barreMenus.add(stageJMenu);
        
        
       //1-option Ajout
        ajoutStage = new JMenuItem("Ajouter");
        ajoutStage.setAccelerator(KeyStroke.getKeyStroke('A', InputEvent.CTRL_DOWN_MASK));
        ajoutStage.setName(Constante.MENU_STAGE_AJOUT);
        ajoutStage.addActionListener(new GestionNavigation());
        stageJMenu.add(ajoutStage);
        
        //3-option Modifier
        modStage = new JMenuItem("Modifier");
        modStage.setName(Constante.MENU_STAGE_MODIF);
        modStage.setAccelerator(KeyStroke.getKeyStroke('Z', InputEvent.CTRL_DOWN_MASK));
        modStage.addActionListener(new GestionNavigation());
        stageJMenu.add(modStage);        
        
        //2-option Supprimer
        suppStage = new JMenuItem("Supprimer");
        suppStage.setName(Constante.MENU_STAGE_SUPP);
        suppStage.setAccelerator(KeyStroke.getKeyStroke('E', InputEvent.CTRL_DOWN_MASK));
        suppStage.addActionListener(new GestionNavigation());
        stageJMenu.add(suppStage);
        
        //3-option Afficher
        affStage = new JMenuItem("Afficher tous les stages");
        affStage.setName(Constante.MENU_STAGE_AFF);
        affStage.setAccelerator(KeyStroke.getKeyStroke('R', InputEvent.CTRL_DOWN_MASK));
        affStage.addActionListener(new GestionNavigation());
        stageJMenu.add(affStage);
        
        /**
         * Création du menu Eleve et ses options
         */
        eleveJMenu = new JMenu("Eleve");
        eleveJMenu.setMnemonic('E');
        barreMenus.add(eleveJMenu);
        
        //1-creation d'un eleve
        ajoutEleve = new JMenuItem("Ajouter");
        ajoutEleve.setName(Constante.MENU_ELEVE_AJOUT);
        ajoutEleve.setAccelerator(KeyStroke.getKeyStroke('Q', InputEvent.CTRL_DOWN_MASK));
        ajoutEleve.addActionListener(new GestionNavigation());
        eleveJMenu.add(ajoutEleve);
        
        // Afficher modifier eleve
        modifierEleve = new JMenuItem("Modifier");
        modifierEleve.setName(Constante.MENU_ELEVE_MODIF);
        modifierEleve.setAccelerator(KeyStroke.getKeyStroke('S', InputEvent.CTRL_DOWN_MASK));
        modifierEleve.addActionListener(new GestionNavigation());
        eleveJMenu.add(modifierEleve);
        
        // Afficher supprimer eleve
        supprimerEleve = new JMenuItem("Supprimer");
        supprimerEleve.setName(Constante.MENU_ELEVE_SUPPRIMER);
        supprimerEleve.setAccelerator(KeyStroke.getKeyStroke('D', InputEvent.CTRL_DOWN_MASK));
        supprimerEleve.addActionListener(new GestionNavigation());
        eleveJMenu.add(supprimerEleve);
        
        //3-option Afficher liste stage / Eleve
        affStageEleve = new JMenuItem("Afficher liste des eleves");
        affStageEleve.setName(Constante.MENU_STAGE_AFF_ELEVE);
        affStageEleve.setAccelerator(KeyStroke.getKeyStroke('F', InputEvent.CTRL_DOWN_MASK));
        affStageEleve.addActionListener(new GestionNavigation());
        eleveJMenu.add(affStageEleve);
        
        /**
         * Création du menu Note et ses options
         */
        noteJMenu = new JMenu("Note");
        noteJMenu.setMnemonic('N');
        barreMenus.add(noteJMenu);
        
        //1-creation d'une note
        ajoutNote = new JMenuItem("Ajouter");
        ajoutNote.setName(Constante.MENU_NOTE_AJOUT);
        ajoutNote.setAccelerator(KeyStroke.getKeyStroke('T', InputEvent.CTRL_DOWN_MASK));
        ajoutNote.addActionListener(new GestionNavigation());
        noteJMenu.add(ajoutNote);
        
        // Afficher modifier une note
        modifierNote = new JMenuItem("Modifier");
        modifierNote.setName(Constante.MENU_NOTE_MODIF);
        modifierNote.setAccelerator(KeyStroke.getKeyStroke('Y', InputEvent.CTRL_DOWN_MASK));
        modifierNote.addActionListener(new GestionNavigation());
        noteJMenu.add(modifierNote);
        
        // Afficher supprimer une note
        supprimerNote = new JMenuItem("Supprimer");
        supprimerNote.setName(Constante.MENU_NOTE_SUPPRIMER);
        supprimerNote.setAccelerator(KeyStroke.getKeyStroke('U', InputEvent.CTRL_DOWN_MASK));
        supprimerNote.addActionListener(new GestionNavigation());
        noteJMenu.add(supprimerNote);    
        
        // Afficher les notes d'un eleve
        afficherNote = new JMenuItem("Afficher les notes");
        afficherNote.setName(Constante.MENU_NOTE_AFF);
        afficherNote.setAccelerator(KeyStroke.getKeyStroke('I', InputEvent.CTRL_DOWN_MASK));
        afficherNote.addActionListener(new GestionNavigation());
        noteJMenu.add(afficherNote);  
        
        //3-option Afficher classement stage / Matiere
        affClassNote = new JMenuItem("Afficher classement des eleves par matiere");
        affClassNote.setName(Constante.MENU_NOTE_AFF_CLASS);
        affClassNote.setAccelerator(KeyStroke.getKeyStroke('O', InputEvent.CTRL_DOWN_MASK));
        affClassNote.addActionListener(new GestionNavigation());
        noteJMenu.add(affClassNote);
        
        /**
         * Création du menu Affectation et ses options
         */
        affectJMenu = new JMenu("Affectation");
        affectJMenu.setMnemonic('A');
        barreMenus.add(affectJMenu);
        
        //1-creation d'une affectation
        ajoutAffect = new JMenuItem("Ajouter");
        ajoutAffect.setName(Constante.MENU_AFFECT_AJOUT);
        ajoutAffect.setAccelerator(KeyStroke.getKeyStroke('J', InputEvent.CTRL_DOWN_MASK));
        ajoutAffect.addActionListener(new GestionNavigation());
        affectJMenu.add(ajoutAffect);
        
        // Afficher modifier une affectation
        modifierAffect = new JMenuItem("Modifier");
        modifierAffect.setName(Constante.MENU_AFFECT_MODIF);
        modifierAffect.setAccelerator(KeyStroke.getKeyStroke('K', InputEvent.CTRL_DOWN_MASK));
        modifierAffect.addActionListener(new GestionNavigation());
        affectJMenu.add(modifierAffect);
        
        // Afficher supprimer une affectation
        supprimerAffect = new JMenuItem("Supprimer");
        supprimerAffect.setName(Constante.MENU_AFFECT_SUPPRIMER);
        supprimerAffect.setAccelerator(KeyStroke.getKeyStroke('L', InputEvent.CTRL_DOWN_MASK));
        supprimerAffect.addActionListener(new GestionNavigation());
        affectJMenu.add(supprimerAffect); 
        
        //3-option Afficher affectation d'un eleve
        affAffect = new JMenuItem("Afficher les affectations");
        affAffect.setName(Constante.MENU_AFFECT_ELEVE);
        affAffect.setAccelerator(KeyStroke.getKeyStroke('M', InputEvent.CTRL_DOWN_MASK));
        affAffect.addActionListener(new GestionNavigation());
        affectJMenu.add(affAffect);
        
        /**
         * Création du menu grade et ses options
         */
        gradeJMenu = new JMenu("Grade");
        gradeJMenu.setMnemonic('G');
        barreMenus.add(gradeJMenu);
        
        //1-Affichage des grades d'un eleves
        affGrade = new JMenuItem("Grades d'un eleve");
        affGrade.setName(Constante.MENU_GRADE_AFF);
        affGrade.setAccelerator(KeyStroke.getKeyStroke('G', InputEvent.CTRL_DOWN_MASK));
        affGrade.addActionListener(new GestionNavigation());
        gradeJMenu.add(affGrade);
        
        /**
         * Ajout menu A propos
         */
        helpJMenu = new JMenu("?");
        helpJMenu.setMnemonic('H');
        barreMenus.add(helpJMenu);
        aPropos = new JMenuItem("A Propos");
        aPropos.setName(Constante.MENU_HELP_A_PROPOS);
        aPropos.addActionListener(new GestionNavigation());
        helpJMenu.add(aPropos);
        
        aPropos = new JMenuItem("Liste des raccourcis");
        aPropos.setName(Constante.MENU_HELP);
        aPropos.addActionListener(new GestionNavigation());
        helpJMenu.add(aPropos);
        
        // Affichage du panel de demarrage.
        afficherPan(new JPanIndex());
        
        f.setVisible(true);
        
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       
    }//fin du constructeur
    
	public static JFrame getF() {
		return f;
	}

	/**
	 * Afficher un panel dans l'appli.
	 * @param pan
	 */
	public static void afficherPan(JPanel pan) {
		// Efface les panneau precedent
		f.getContentPane().removeAll();
		
		//ajouter le panneau pan
		f.add(pan);
		
		// rendre visible le pan
		f.setVisible(true);
	}
}